package com.gpnu7_412.yanzhi.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;
import java.util.Map;

/**
 * Jwt 令牌工具类
 * @author ZZH
 */
public class JwtUtils {

    // 签名密钥
    private static final String SECRET_KEY = "yanzhi";
    // 有效时间
    private static final Long EXPIRE = 1000 * 60 * 60 * 6L;

    /**
     * 生成 Jwt 令牌
     * @param claims Jwt 第二部分负载 payload中存贮的内容
     * @return Jwt 字符串
     */
    public static String generateJwtToken(Map<String, Object> claims) {
        return JWT.create()
                .withClaim("claims", claims)
                .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRE))
                .sign(Algorithm.HMAC256(SECRET_KEY));
    }

    /**
     * 解析 Jwt 令牌
     * @param jwtToken Jwt 令牌
     * @return Jwt 第二部分负载 payload中存贮的内容
     */
    public static Map<String, Object> parseJwtToken(String jwtToken) {
         return JWT.require(Algorithm.HMAC256(SECRET_KEY))
                 .build()
                 .verify(jwtToken)
                 .getClaim("claims")
                 .asMap();
    }
}
